{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a5fbec6d",
   "metadata": {},
   "source": [
    "## SETUP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "54ce3d81",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install gridworld from pip\n",
    "!pip install dezerogym"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d364f15",
   "metadata": {},
   "source": [
    "## ch04/dp.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "fb64d49a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'L1': -2.249167525908671, 'L2': -2.749167525908671}\n",
      "76\n"
     ]
    }
   ],
   "source": [
    "V = {'L1': 0.0, 'L2': 0.0}\n",
    "new_V = V.copy()\n",
    "\n",
    "cnt = 0\n",
    "while True:\n",
    "    new_V['L1'] = 0.5 * (-1 + 0.9 * V['L1']) + 0.5 * (1 + 0.9 * V['L2'])\n",
    "    new_V['L2'] = 0.5 * (0 + 0.9 * V['L1']) + 0.5 * (-1 + 0.9 * V['L2'])\n",
    "\n",
    "    delta = abs(new_V['L1'] - V['L1'])\n",
    "    delta = max(delta, abs(new_V['L2'] - V['L2']))\n",
    "    V = new_V.copy()\n",
    "\n",
    "    cnt += 1\n",
    "    if delta < 0.0001:\n",
    "        print(V)\n",
    "        print(cnt)\n",
    "        break"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b30c30de",
   "metadata": {},
   "source": [
    "## ch04/dp_inplace.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "28911cc1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'L1': -2.2493782177156936, 'L2': -2.7494201578106514}\n",
      "60\n"
     ]
    }
   ],
   "source": [
    "V = {'L1': 0.0, 'L2': 0.0}\n",
    "\n",
    "cnt = 0\n",
    "while True:\n",
    "    t = 0.5 * (-1 + 0.9 * V['L1']) + 0.5 * (1 + 0.9 * V['L2'])\n",
    "    delta = abs(t - V['L1'])\n",
    "    V['L1'] = t\n",
    "\n",
    "    t = 0.5 * (0 + 0.9 * V['L1']) + 0.5 * (-1 + 0.9 * V['L2'])\n",
    "    delta = max(delta, abs(t - V['L2']))\n",
    "    V['L2'] = t\n",
    "\n",
    "    cnt += 1\n",
    "    if delta < 0.0001:\n",
    "        print(V)\n",
    "        print(cnt)\n",
    "        break"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5d1ef174",
   "metadata": {},
   "source": [
    "## ch04/gridwolrd.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c80e90a4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from dezerogym.gridworld import GridWorld\n",
    "\n",
    "env = GridWorld()\n",
    "V = {}\n",
    "for state in env.states():\n",
    "    V[state] = np.random.randn()\n",
    "env.render_v(V)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ceb5ed4c",
   "metadata": {},
   "source": [
    "## ch04/policy_eval.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "6c135a42",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from collections import defaultdict\n",
    "from dezerogym.gridworld import GridWorld\n",
    "\n",
    "\n",
    "def eval_onestep(pi, V, env, gamma=0.9):\n",
    "    for state in env.states():\n",
    "        if state == env.goal_state:\n",
    "            V[state] = 0\n",
    "            continue\n",
    "\n",
    "        action_probs = pi[state]\n",
    "        new_V = 0\n",
    "        for action, action_prob in action_probs.items():\n",
    "            next_state = env.next_state(state, action)\n",
    "            r = env.reward(state, action, next_state)\n",
    "            new_V += action_prob * (r + gamma * V[next_state])\n",
    "        V[state] = new_V\n",
    "    return V\n",
    "\n",
    "\n",
    "def policy_eval(pi, V, env, gamma, threshold=0.001):\n",
    "    while True:\n",
    "        old_V = V.copy()\n",
    "        V = eval_onestep(pi, V, env, gamma)\n",
    "\n",
    "        delta = 0\n",
    "        for state in V.keys():\n",
    "            t = abs(V[state] - old_V[state])\n",
    "            if delta < t:\n",
    "                delta = t\n",
    "\n",
    "        if delta < threshold:\n",
    "            break\n",
    "    return V\n",
    "\n",
    "\n",
    "env = GridWorld()\n",
    "gamma = 0.9\n",
    "\n",
    "pi = defaultdict(lambda: {0: 0.25, 1: 0.25, 2: 0.25, 3: 0.25})\n",
    "V = defaultdict(lambda: 0)\n",
    "\n",
    "V = policy_eval(pi, V, env, gamma)\n",
    "env.render_v(V, pi)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d18f03b2",
   "metadata": {},
   "source": [
    "## ch04/policy_iter.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6f9cc83b",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def argmax(d):\n",
    "    \"\"\"d (dict)\"\"\"\n",
    "    max_value = max(d.values())\n",
    "    max_key = -1\n",
    "    for key, value in d.items():\n",
    "        if value == max_value:\n",
    "            max_key = key\n",
    "    return max_key\n",
    "\n",
    "\n",
    "def greedy_policy(V, env, gamma):\n",
    "    pi = {}\n",
    "\n",
    "    for state in env.states():\n",
    "        action_values = {}\n",
    "\n",
    "        for action in env.actions():\n",
    "            next_state = env.next_state(state, action)\n",
    "            r = env.reward(state, action, next_state)\n",
    "            value = r + gamma * V[next_state]\n",
    "            action_values[action] = value\n",
    "\n",
    "        max_action = argmax(action_values)\n",
    "        action_probs = {0: 0, 1: 0, 2: 0, 3: 0}\n",
    "        action_probs[max_action] = 1.0\n",
    "        pi[state] = action_probs\n",
    "    return pi\n",
    "\n",
    "\n",
    "def policy_iter(env, gamma, threshold=0.001, is_render=True):\n",
    "    pi = defaultdict(lambda: {0: 0.25, 1: 0.25, 2: 0.25, 3: 0.25})\n",
    "    V = defaultdict(lambda: 0)\n",
    "\n",
    "    while True:\n",
    "        V = policy_eval(pi, V, env, gamma, threshold)\n",
    "        new_pi = greedy_policy(V, env, gamma)\n",
    "\n",
    "        if is_render:\n",
    "            env.render_v(V, pi)\n",
    "\n",
    "        if new_pi == pi:\n",
    "            break\n",
    "        pi = new_pi\n",
    "\n",
    "    return pi\n",
    "\n",
    "\n",
    "env = GridWorld()\n",
    "gamma = 0.9\n",
    "pi = policy_iter(env, gamma)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60ff1bf6",
   "metadata": {},
   "source": [
    "## ch04/value_iter.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9bf77bee",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWAAAADrCAYAAABXYUzjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAQrElEQVR4nO3df2zUdZ7H8dfACAv/gK2w4rQeM8xApVCpDFr4w1UT7jYiw6qF9tgorMa6Jxvj+iOLty7/gEe9Q12FXtAEd9FIaSR7HSwCycJt/JG4lYJKyyltabUdkIQacA39QdvP/eExa69TWsqXvit9Pr4hcb79zPT7fWfyzOQ7ztTnnBMAYOiNsj4AABipCDAAGCHAAGCEAAOAEQIMAEYIMAAY8V/M4muuucZNnTr1Mh0KAFyZqqqqTjnnJv3//RcV4KlTp+qjAx95d1QAMAKM8o36IuX+oT4QAMB3CHAf9uzZo6wZWYqEIyouLk65pr29XYUFhYqEI8q7JU+NjY3Jn61fv16RcERZM7K0d+/eITrq4Yt5eot5esd0ls65Af+bO3eu6x4B27nOcy4UCrm6+jrX1t7mcnJyXHVNda91m0o2uaKHi1y363bbSre5ZcuWuW7X7aprql1OTo5rbWt19cfqXSgUcuc6z5mfl9XGPL3dmKd321DNUtKBVE3lFXAKlZWVCofDCoVCGjNmjAoKCxSPx3ut2xnfqRUrVkiS8vPztW/fPjnnFI/HVVBYoLFjxyoYDCocDquysnKoT2PYYJ7eYp7esZ4lAU4hkUgoIzMjeTsjI0OJRCLluszMTEmS3+/XhAkT1NLS0mO/JAUyAinvP1IwT28xT+9Yz5IAA4ARApxCIBBQc1Nz8nZzc7MCgUDKdU1NTZKkzs5OnTlzRunp6T32S1KiOZHy/iMF8/QW8/SO+Sx5E6731nGuwwWDQVd/rD55Yf5w9eFe6zZu2tjjwvzSpUtdt+t2h6sP97gwHwwGR+ybHN2OeXq9MU/vtqGapfp4E44A97FV7KpwkUjEhUIht3bd2uT+Z373jCuPl7tu1+3Otp51+fn5btq0aW7evHmurr4uuW7turUuFAq56dOnu13v7DI/H+uNeXq7MU/vtqGYZV8B9l3MX8SIRqOOT8IBwMUZ5RtV5ZyL9tpvcTAAAAIMAGYIMAAYIcAAYIQAA4ARAgwARggwABghwABghAADgBECDABGCDAAGCHAAGCEAAOAEQIMAEYIMAAYIcAAYIQAA4ARAgwARggwABghwABghAADgBECDABGCDAAGCHAAGCEAAOAEQIMAEYIMAAYIcAAYIQAA4ARAgwARggwABghwABghAADgBECDABGCDAAGCHAAGCEAAOAEQIMAEYIMAAYIcAAYIQAA4ARAgwARggwABghwABghAADgBECDABGCDCAQfGP9it3Tq5mz5qt2OKYTp8+nXLdAw88oB9P/rFmz5rd52M55/Too48qEo7oxpwbdfDgwZTrWltbddtPblNXV5ckqba2VovvWqzwtLCic6O64/Y79O677ybXl5eX68acGzXzhpnKmZ2j8vLyHo936tQpjblqjDZv3txjf3BqUKdOneqxr6KiQmvWrOnzHAaDAAMYlHHjxunQx4d0uPqw0tLSVFJSknLdypUrtXvP7gs+1u7du1VXW6ejtUf1yquv6JF/eSTlutdee01333O3Ro8erba2Nt216C49VPSQ6urrdKDqgF7e+LKOHTsmSfrkk0/01JNPqTxeriP/c0TxnXE99eRT+vTTT5OP99ZbbykvL0/bS7f3e76LFi1SxdsVOnv2bL9rB4oAA7hkefPzlEgkUv7s1ltvVVpa2gXvH4/Hdd/998nn8ykvL0+nT5/WiRMneq3b9uY2LVmyRJL05ptvav78+YrFYsmfz5o1SytXrpQkPb/heT39r08rGAxKkoLBoFY/vVob/mNDcv320u3a8PwGJRIJNTc3X/AYfT6ffnLbT1RRUXHBdReDAAO4JF1dXdq/b3+PEF6s44njyszMTN7OyMjoFfSOjg4dO3ZMU6dOlSTV1NQo96bcPh+zpqZGc+fO7bEvGo2qpqZGktTU1KQTJ07o5ptv1tJlS1VWVtbvcUajUb333nsDPa1+EWAAg9La2qrcObmacu0UnTx5UgsXLrysv+/UqVOaOHFinz+/5+57NHvWbN17z70DeryysjItXbZUklRYWDigyxCTJ0/WieO9X5kPFgEGMCjnrwE3ftEo51yf14AH4rrAdWpqakrebm5uViAQ6PX72trakrezs7N16OCh5O0//def9Ic//kFff/21JGnmzJmqqqrq8RhVVVXKzs6W9N3lh61/3Krg1KCWxJbo008/VW1t7QWPs62tTePGjRvcSaZAgAFckvHjx+ull1/SC8+/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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def value_iter_onestep(V, env, gamma):\n",
    "    for state in env.states():\n",
    "        if state == env.goal_state:\n",
    "            V[state] = 0\n",
    "            continue\n",
    "\n",
    "        action_values = []\n",
    "        for action in env.actions():\n",
    "            next_state = env.next_state(state, action)\n",
    "            r = env.reward(state, action, next_state)\n",
    "            value = r + gamma * V[next_state]\n",
    "            action_values.append(value)\n",
    "\n",
    "        V[state] = max(action_values)\n",
    "    return V\n",
    "\n",
    "\n",
    "def value_iter(V, env, gamma, threshold=0.001, is_render=True):\n",
    "    while True:\n",
    "        if is_render:\n",
    "            env.render_v(V)\n",
    "\n",
    "        old_V = V.copy()\n",
    "        V = value_iter_onestep(V, env, gamma)\n",
    "\n",
    "        delta = 0\n",
    "        for state in V.keys():\n",
    "            t = abs(V[state] - old_V[state])\n",
    "            if delta < t:\n",
    "                delta = t\n",
    "\n",
    "        if delta < threshold:\n",
    "            break\n",
    "    return V\n",
    "\n",
    "\n",
    "V = defaultdict(lambda: 0)\n",
    "env = GridWorld()\n",
    "gamma = 0.9\n",
    "\n",
    "V = value_iter(V, env, gamma)\n",
    "\n",
    "pi = greedy_policy(V, env, gamma)\n",
    "env.render_v(V, pi)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
